#ifndef __Framework_App_h__
#define __Framework_App_h__

#include "Core/BasicTypes.h"
#include "Core/VecMath.h"

namespace Orca {

	class Framework;

	//--------------------------------------------------------------------------
	class IApp {
	public:
		enum MOUSE_BUTTON
		{
			LEFT_BUTTON,
			MIDDLE_BUTTON,
			RIGHT_BUTTON,
		};

		virtual ~IApp() {}

		virtual void getAppTitle(Str &title) = 0;
		virtual void getInitRes(uint32 &width, uint32 &height) = 0;

		virtual void registerPluginModules() = 0;
		virtual bool startup(Framework *framework) = 0;
		virtual void shutdown() = 0;
		virtual void step(float dt) = 0;
		virtual void notifyResChanged(uint32 width, uint32 height) = 0;
		virtual void notifyKeyboardEvent(uint8 c) = 0;
		virtual void notifyMouseButtonEvent(MOUSE_BUTTON btn, bool down, int x, int y) = 0;
		virtual void notifyMouseMotionEvent(int x, int y) = 0;
	};
}

#endif	// __Framework_App_h__